package com.quectel.core.module.invoice.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @author zhangheng
 * @email nolan.zhang@quectel.com
 * @date 2023/03/31 16:28
 */
@Data
@Schema
public class InvoiceDto implements Serializable {

    /**
     * id
     */
    @Schema(description = "id")
    private Long id;

    /**
     * 租户id
     */
    @Schema(description = "租户id")
    private Long tenantId;

    /**
     * 小区id
     */
    @Schema(description = "小区id")
    private Long villageId;


    /**
     * 人员id
     */
    @Schema(description = "人员id")
    private Long personId;

    /**
     * 人员id
     */
    @Schema(description = "人员id")
    private Byte personType;

    /**
     * 字典值1物业账单...
     */
    @Schema(description = "字典值1物业账单...")
    private Byte sourceType;

    /**
     * 发票科目内容:物业账单...
     */
    @Schema(description = "发票科目内容:物业账单...")
    private String invoiceContent;

    /**
     * 开票人员id
     */
    @Schema(description = "开票人员id")
    private Long invoicePersonId;


    /**
     * 开票总金额
     */
    @Schema(description = "开票总金额")
    private BigDecimal invoiceAmount;

    /**
     * 开票状态0待开票1已开票2已红冲3已关闭
     */
    @Schema(description = "开票状态0待开票1已开票2已红冲3已关闭")
    private Byte status;

    /**
     * 开票号
     */
    @Schema(description = "开票号")
    private String invoiceNo;

    /**
     * 发票类型1电子发票2纸质发票
     */
    @Schema(description = "发票类型1电子发票2纸质发票")
    private Byte invoiceType;

    /**
     * 发票性质1普通发票2增值税专票
     */
    @Schema(description = "发票性质1普通发票2增值税专票")
    private Byte invoiceNature;

    /**
     * 物流公司
     */
    @Schema(description = "物流公司")
    private String logisticsEnterprises;

    /**
     * 物流单号
     */
    @Schema(description = "物流单号")
    private String logisticsNo;

    /**
     * 附件
     */
    @Schema(description = "附件")
    private String extFiles;

    /**
     * 备注
     */
    @Schema(description = "备注")
    private String remark;

    /**
     * 开票人
     */
    @Schema(description = "开票人")
    private String invoicePerson;

    /**
     * 开票时间
     */
    @Schema(description = "开票时间")
    private Date invoiceTime;

    /**
     * 创建时间
     */
    @Schema(description = "创建时间")
    private Date createTime;

    /**
     * 更新时间
     */
    @Schema(description = "更新时间")
    private Date updateTime;

    /************非数据库字段 start ************/


    /**
     * 园区名称
     */
    @Schema(description = "小区名称")
    private String villageName;

    /**
     * 发票抬头
     */
    @Schema(description = "发票抬头")
    private String invoiceTitleName;

    /**
     * 发票类型
     */
    @Schema(description = "发票类型")
    private Byte invoiceTitleType;

    /**
     * 对应类型的账单id
     */
    @Schema(description = "子项目")
    private List<InvoiceItemDto> invoiceItems;


    /**
     * 开票抬头镜像
     */
    @Schema(description = "")
    private InvoiceTitleDto invoiceTitle;

    /**
     * 人员姓名
     */
    @Schema(description = "人员姓名")
    private String personName;


    /************非数据库字段 end **************/
}
